ヘッダーをスキップ
Oracle TimesTen In-Memory Databaseアーキテクチャ概要
リリース6.0
B25763-01
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

トランザクション・ログAPI

TimesTenが提供するトランザクション・ログAPI(XLA)によって、アプリケーションではローカル・データ・ストアのトランザクション・ログを監視し、他のアプリケーションで実行された更新を検出できます。また、XLAが提供する関数によって、XLAアプリケーションでは、検出した変更を別のデータ・ストアに適用できます。XLAはC言語のAPIですが、TimesTenでは、個別のJavaラッパー・インタフェースと、TTClasses製品の一部としてXLAのC++ラッパー・インタフェースが提供されます。

アプリケーションでは主にXLAを使用して、変更通知スキームを実装します。このスキームでは、XLAアプリケーションがデータ・ストアに変更がないかどうかを監視し、変更に基づいて対処できます。たとえば、株式取引環境におけるTimesTenデータ・ストアは、株価のデータ・ストリームによって絶えず更新されます。自動取引アプリケーションではXLAを使用して、特定の株価の更新についてデータ・ストアを監視し、その情報に基づいて発注するかどうかを判断します。詳細は、「使用例2: リアルタイム取引価格サービス・アプリケーション」を参照してください。

また、XLAを使用してカスタム・データ・レプリケーション・ソリューションを構築し、TimesTenレプリケーション・サービス(『Oracle TimesTen Replication - TimesTen to TimesTen開発者および管理者ガイド』を参照)のかわりに使用することもできます。このようなXLA対応のレプリケーション・ソリューションには、TimesTen以外のデータベースによるレプリケーションや、別のTimesTenデータ・ストアへの更新の転送が含まれます。

XLAの動作

XLAは次のいずれかのモードで動作します。

ログ更新レコード

更新レコードを作成したトランザクションをコミットすると、その更新レコードをただちにログから読み取れます。ログ・スニファ・アプリケーションでは、ログに書き込まれた更新レコードのグループをXLA ttXlaNextUpdate関数を使用して取得できます。

返される各レコードには、固定長の更新ヘッダー(ttXlaUpdateDesc_t)と、内部書式に従って保存された1行または2行のデータが含まれます。更新ヘッダーには、更新行が適用される表、そのレコードがトランザクションの最初のレコードかまたは最後(コミット)のレコードか、レコードが表すトランザクション・タイプ、返される行データの長さ、および更新された列(存在する場合)が記述されます。

データの更新を反映するレコードの場合は、2行が返され、更新前と更新後の行データがレポートされます。各行のデータの最初の部分は固定長データで、その後ろに可変長データが続きます。アプリケーションからttXlaGetColumnInfo関数をコールすると、特定の表の列のオフセットとサイズを取得できます。XLAがその表のレコードを返すと、返された行の固定長部分の列は、ttXlaGetColumnInfoで返されたオフセットに格納されます。可変長データの場合、図8.3に示すように、行の固定長部分のオフセットにあるデータは、行の可変長部分の実データの位置の算出に使用されるアドレスです。

図8.3 更新レコードの内容

レコード内の行データは、TimesTenの内部書式に従っています。アプリケーションで列のアドレスを見つけたら、そのアドレスの値を対応するODBC Cデータ型に直接キャストできます。日付、時間、10進値などの複合データ型は、アプリケーションで、XLA変換関数を使用してそれらの対応するODBC C値に変換できます。詳細は、『Oracle TimesTen In-Memory Database C開発者およびリファレンス・ガイド』のXLAとTimesTenイベント管理に関する章の複合データ型の変換の項を参照してください。